A software program (hereinafter, simply described as “program” in some cases) contains defects caused by human-induced errors. It is general to carry out a test in order to search and correct the defects contained in the program before shipment of a program product. In carrying out the test, for example, the location(s) and cause(s) of the defect(s) in the program serving as a test target are found out by sequentially executing test cases serving as programs for the tests, which set and execute various conditions for the program serving as the test target, and generating failure.
Furthermore, for example, tools and techniques related to so-called continuous integration (CI: Continuous Integration), which automatically execute the test cases, have become wide spread. In the tools, etc. for realizing CI, generally, a program which is developed by a plurality of persons is managed in a centralized manner in a storage region called a repository on a central storage server. Then, every time a developer registers the developed program in the repository, test cases are automatically executed to check whether defects are present in the registered program or not, thereby ensuring quality of the program.
Meanwhile, there is provided a mechanism in which a plurality of developers, etc. approves development contents by reviews for checking contents of related objects such as source code of the program managed in the repository. Such methods of cooperative development by a plurality of developers and software development by reviews are called social coding.
On the other hand, in carrying out tests, there is a problem that execution time is increased along with the volume of the test cases. Since defects of a program normally occur only under particular conditions, many test cases expecting all conditions have to be prepared and executed in order to search that. Therefore, execution of the test cases requires long time.
For this problem, for example, Japanese Patent Application Laid-Open No. 2008-204405 (Patent Document 1) describes techniques of saving the information of test cases of the tests carried out in the past, combining the information and the dependence relations obtained by analyzing a target program, thereby automatically extracting the parts which are supposed to be tested on a priority basis in accordance with changed parts of the program to carry out a regression test.
Moreover, Japanese Patent Application Laid-Open No. 2010-134643 (Patent Document 2) describes techniques of retaining importance and execution record time in a repository as attributes of test cases and, when there is a notification of a source change from a source configuration managing tool, which has received source registration from a developer, to a CI tool, analyzing a changed file passed from the CI tool, storing an analysis result in the repository, and selecting the test cases to be executed according to execution importance and an execution time threshold value passed from the CI tool, and the importance and execution record time of the test cases stored in the repository.